#include<cmath>
#include<cstdio>
#include<algorithm>
#define rep(i,l,r) for (int i=l; i<=r; i++)
using namespace std;

const int N=25;
const double eps=1e-8,inf=1e15;
int n,m,type,id[N<<1];
double a[N][N],ans[N];

void pivot(int l,int e){
	swap(id[n+l],id[e]);
	double t=a[l][e]; a[l][e]=1;
	rep(i,0,n) a[l][i]/=t;
	rep(i,0,m) if (i!=l && fabs(a[i][e])>eps){
		t=a[i][e]; a[i][e]=0;
		rep(j,0,n) a[i][j]-=a[l][j]*t;
	}
}

bool init(){
	while (1){
		int e=0,l=0;
		rep(i,1,m) if (a[i][0]<-eps && (!l || (rand()&1))) l=i;
		if (!l) break;
		rep(i,1,n) if (a[l][i]<-eps && (!e || (rand()&1))) e=i;
		if (!e) { puts("Infeasible"); return 0; }
		pivot(l,e);
	}
	return 1;
}

bool simplex(){
	while (1){
		int l=0,e=0; double mn=inf;
		rep(i,1,n) if (a[0][i]>eps) { e=i; break; }
		if (!e) break;
		rep(i,1,m) if (a[i][e]>eps && a[i][0]/a[i][e]<mn) mn=a[i][0]/a[i][e],l=i;
		if (!l) { puts("Unbounded"); return 0; }
		pivot(l,e);
	}
	return 1;
}

int main(){
	srand(19260817); scanf("%d%d%d",&n,&m,&type);
	rep(i,1,n) scanf("%lf",&a[0][i]);
	rep(i,1,m){
		rep(j,1,n) scanf("%lf",&a[i][j]); scanf("%lf",&a[i][0]);
	}
	rep(i,1,n) id[i]=i;
	if (init() && simplex()){
		printf("%.8lf\n",-a[0][0]);
		if (type){
			rep(i,1,m) ans[id[n+i]]=a[i][0];
			rep(i,1,n) printf("%.8lf ",ans[i]);
			puts("");
		}
	}
	return 0;
}